#ifndef LNKBASEHANDLER_H
#define LNKBASEHANDLER_H

#include <QString>
#include <QFile>
#include "applnk.h"

class LNKBaseHandler
{
public:
    LNKBaseHandler(const QString& lnk_dir, const QString& init_file, QWidget* parent_widget)
        : file(init_file), parent_widget_(parent_widget), lnk_dir_(lnk_dir) {}

    virtual ~LNKBaseHandler();
    inline QList<AppLNK*> get_list() {return applnk_list;}
    inline qsizetype get_size() {return applnk_list.size();}
    void add_lnk(const qsizetype &index, const QString& absolute_path);
    bool delete_lnk(AppLNK* app_lnk);
    int index_of(const QString &lnk_name);
    bool move_lnk(qsizetype index, AppLNK* app_lnk);

protected:
    virtual AppLNK* create_applnk(const QString& absolute_path) = 0;
    QList<QString> read_all();
    void write_all();

    QFile file;
    QWidget* parent_widget_;  // 父窗口，创建app_lnk时要用到
    QList<AppLNK*> applnk_list;
    QString lnk_dir_;
};

#endif // LNKBASEHANDLER_H
